package cn.iocoder.yudao.module.alipay.dal.mysql.costoutapply;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.alipay.dal.dataobject.costoutapply.CostOutApplyDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.alipay.controller.admin.costoutapply.vo.*;

/**
 * 提现记录 Mapper
 *
 * @author 芋道源码
 */
@Mapper
public interface CostOutApplyMapper extends BaseMapperX<CostOutApplyDO> {

    default PageResult<CostOutApplyDO> selectPage(CostOutApplyPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<CostOutApplyDO>()
                .eqIfPresent(CostOutApplyDO::getUserId, reqVO.getUserId())
                .betweenIfPresent(CostOutApplyDO::getApplyTime, reqVO.getApplyTime())
                .eqIfPresent(CostOutApplyDO::getCashOutAmount, reqVO.getCashOutAmount())
                .eqIfPresent(CostOutApplyDO::getBalanceAmount, reqVO.getBalanceAmount())
                .eqIfPresent(CostOutApplyDO::getCollectionType, reqVO.getCollectionType())
                .eqIfPresent(CostOutApplyDO::getCollectionAccount, reqVO.getCollectionAccount())
                .eqIfPresent(CostOutApplyDO::getApplyStatues, reqVO.getApplyStatues())
                .eqIfPresent(CostOutApplyDO::getOperator, reqVO.getOperator())
                .eqIfPresent(CostOutApplyDO::getRemark, reqVO.getRemark())
                .betweenIfPresent(CostOutApplyDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(CostOutApplyDO::getId));
    }

    default List<CostOutApplyDO> selectList(CostOutApplyExportReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<CostOutApplyDO>()
                .eqIfPresent(CostOutApplyDO::getUserId, reqVO.getUserId())
                .betweenIfPresent(CostOutApplyDO::getApplyTime, reqVO.getApplyTime())
                .eqIfPresent(CostOutApplyDO::getCashOutAmount, reqVO.getCashOutAmount())
                .eqIfPresent(CostOutApplyDO::getBalanceAmount, reqVO.getBalanceAmount())
                .eqIfPresent(CostOutApplyDO::getCollectionType, reqVO.getCollectionType())
                .eqIfPresent(CostOutApplyDO::getCollectionAccount, reqVO.getCollectionAccount())
                .eqIfPresent(CostOutApplyDO::getApplyStatues, reqVO.getApplyStatues())
                .eqIfPresent(CostOutApplyDO::getOperator, reqVO.getOperator())
                .eqIfPresent(CostOutApplyDO::getRemark, reqVO.getRemark())
                .betweenIfPresent(CostOutApplyDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(CostOutApplyDO::getId));
    }

    default List<CostOutApplyDO> getListByUserId(String userId){
       return selectList(new LambdaQueryWrapperX<CostOutApplyDO>().eq(CostOutApplyDO::getUserId,userId));
    };
}
